package com.hq;

/*
*
* 初始化地雷
* 新建一个类专门生成地雷
* */
public class BottomRay {
    //雷区是一个网格，可以根据二维数组来表示位置，两个维度分别表示横纵坐标，横纵坐标均为整数
    //单独定义一个一维数组存放坐标，该数组中相连的数代表地雷的坐标，所以数组的长度是地雷的两倍
    //存放坐标
    int[]rays = new int[GameUtil.RAY_MAX*2];
    //地雷的坐标
    int x,y;
    //是否放置 T表示可以放置，F不可放置
    boolean isPlace = true;
    //设置代码块，生成地雷坐标，每生成一个，需要循环，从0开始，i每次加2个
    //每次需要生成x，y的坐标

    {
        for (int i = 0; i < GameUtil.RAY_MAX*2; i=i+2) {
            //Math函数，random()随机数生成，x是乘以地图的宽度，加1是让随机数从0-11变为1-12
            x = (int)(Math.random()*GameUtil.MAP_W+1);//1-12
            y = (int)(Math.random()*GameUtil.MAP_H+1);//1-12
            //将生成的坐标赋值到数组中，判断坐标是否存在，判断地雷是否存在
            for (int j = 0; j < i; j = j+2) {
                 if (x == rays[j] && y == rays[j+1]) {
                     //如果生成的地雷（已经存在），那么首先回退，其次不可放置、
                     i = i - 2;
                     isPlace = false;
                     break;
                 }
            }

            //判断完毕后，如果还能放置将两个坐标放在数组中
            if (isPlace) {
                rays[i] = x;
                rays[i + 1] = y;
            }
            //最后无论是否能够放置，都要释放状态
            isPlace = true;
        }
        //然后将生成的坐标放置到二维数组中
        for (int i = 0; i < GameUtil.RAY_MAX*2; i=i+2) {
            //rays[i]表示横坐标，rays[i+1]表示纵坐标，赋值为-1；-1代表地雷
            GameUtil.DATA_BORROM[rays[i]][rays[i+1]] = -1;
        }
    }

}
